const { ErrorModel } = require('../model/resModel')
const jwt = require('jsonwebtoken')

const secret = 'Peppa_pig' // 密钥

const checkToken = async (ctx, next) => {
  const token = ctx.request.header.authorization
  // 没有 token
  if (!token) {
    ctx.body = new ErrorModel('没有权限访问！')
    return
  }
  // 尝试解码 token
  try {
    const decoded = jwt.verify(token.split(' ')[1], secret)
    // 将解密后的 token 保存到 ctx.state 中，方便后续路由使用
    ctx.state.token = decoded
    await next()
  } catch (error) {
    ctx.body = new ErrorModel('token已过期')
    return
  }
}

module.exports = checkToken
